
// 中间件的核心原理就是重写 store.dispatch 
/**
 * 不管是什么中间件，不管是什么逻辑，他的基本架构都是一样的
 * getState 获取仓库中的状态
 * dispatch 重新派发动作
 * next 调用下一个中间件或者原始的store.dispatch
 */
function thunk({getState,dispatch}){
    return function(next){//为了实现中间件的级联，调用下一个中间件
      return function(action){//这才就是我们改造后的dispatch方法了
        if(typeof action === 'function'){
            // 执行此函数，并且传入getState,dispatch
            return action(getState,dispatch)
        }
        // 执行原始的store.dispatch
        return next(action);
      }
    }
}
export default thunk;